home *** CD-ROM | disk | FTP | other *** search
/ The Atari Compendium / The Atari Compendium (Toad Computers) (1994).iso / files / prgtools / langs / sozo2 / scsrc20.lzh / SZADB.LZH / ASSIST.S < prev    next >
Encoding:
Text File  |  1990-02-21  |  2.1 KB  |  147 lines

  1.     .text
  2.     .globl    _trap2
  3.     .globl    _trap3
  4.     .globl    _trap4
  5.     .globl    _trap5
  6.     .globl    _trap6
  7.     .globl    _trap7
  8.     .globl    _trap8
  9.     .globl    _trap9
  10.     .globl    _trapx
  11.  
  12.     .data
  13. trapno:    .ds.w    1
  14. svmysp:    .ds.l    1
  15.  
  16.     .text
  17.  
  18. A7    equ    15*4
  19. PC    equ    A7+4
  20. SR    equ    PC+4
  21. XP    equ    SR+4
  22. SUPV    equ    $2000
  23.  
  24. _trap2:
  25.     move.w    #2,trapno
  26.  
  27. btrap:
  28.     move.w    (sp)+,_detail
  29.     move.l    (sp)+,_be_addr
  30.     move.w    (sp)+,_be_instr
  31.     bra    rtrap
  32.  
  33. _trap3:
  34.     move.w    #3,trapno
  35.     bra    btrap
  36.  
  37. _trap4:
  38.     move.w    #4,trapno
  39.  
  40. rtrap:
  41.     movem.l    d0-d7/a0-a6,_regbuf
  42.     move.w    (sp)+,d0    * SR
  43.     move.l    (sp)+,d1    * PC
  44.     tst.w    _running
  45.     beq    myerror
  46.  
  47.     move.w    d0,d2
  48.     and.w    #SUPV,d2
  49.     bne    frsupv
  50. *trap from user mode
  51.     move.l    a7,_regbuf+XP
  52.     move    usp,a0
  53.     move.l    a0,_regbuf+A7
  54.     bra    frproc
  55. *trap from supv mode
  56. frsupv:
  57.     move.l    a7,_regbuf+A7
  58.     move    usp,a0
  59.     move.l    a0,_regbuf+XP
  60.     
  61. frproc:
  62.     move.l    svmysp,sp
  63.     move.l    d1,-(sp)    * push PC
  64.     move.w    d0,-(sp)    * push SP
  65.     move.w    trapno,-(sp)    * push trapno
  66.     jsr    _trap
  67. myerror:
  68.     * stay with this stack
  69.     jsr    _trap
  70.  
  71. _trap5:
  72.     move.w    #5,trapno
  73.     bra    rtrap
  74.  
  75. _trap6:
  76.     move.w    #6,trapno
  77.     bra    rtrap
  78.  
  79. _trap7:
  80.     move.w    #7,trapno
  81.     bra    rtrap
  82.  
  83. _trap8:
  84.     move.w    #8,trapno
  85.     bra    rtrap
  86.  
  87. _trap9:
  88.     move.w    #9,trapno
  89.     bra    rtrap
  90.  
  91. _trapx:
  92.     move.w    #10,trapno
  93.     bra    rtrap
  94.  
  95.     .globl    _go
  96. _go:
  97.     move.l    sp,svmysp
  98.     move.w    _regbuf+SR+2,d0
  99.     move.w    d0,d2
  100.     and.w    #SUPV,d2
  101.     bne    gosupv
  102. * going to user mode - user's SSP in XP, user's USP in A7
  103.     move.l    _regbuf+A7,a0        *restore usp
  104.     move    a0,usp
  105.     move.l    _regbuf+XP,a7        *restore ssp
  106.     bra    gocom
  107. * going to system mode - user's SSP in A7, user's USP in XP
  108. gosupv:
  109.     move.l    _regbuf+XP,a0
  110.     move    a0,usp            *restore usp
  111.     move.l    _regbuf+A7,a7        *restore ssp
  112. gocom:
  113.     move.l    _regbuf+PC,-(sp)    *push user's PC
  114.     move.w    d0,-(sp)        *push user's SR
  115.     movem.l    _regbuf,d0-d7/a0-a6    *restore other regs
  116.     rte
  117.  
  118.     .globl    _bcopy
  119. _bcopy:
  120.     move.l    4(sp),a1
  121.     move.l    8(sp),a0
  122.     move.w    12(sp),d0
  123.     bra    bcd
  124. bclp:
  125.     move.b    (a1)+,(a0)+
  126. bcd:
  127.     dbra    d0,bclp
  128.     rts
  129.  
  130.     .globl    _wcopy
  131. _wcopy:
  132.     move.l    4(sp),a1
  133.     move.l    8(sp),a0
  134.     move.w    12(sp),d0
  135.     bra    wcd
  136. wclp:
  137.     move.w    (a1)+,(a0)+
  138. wcd:
  139.     dbra    d0,wclp
  140.     rts
  141.  
  142.     .globl    _getfonts
  143. _getfonts:
  144.     .dc.w    $0a000
  145.     move.l    a1,d0
  146.     rts
  147.